Protocol Overviewを読む
https://scrapbox.io/files/6431cc7ea09f4e001b604e46.png
Start hereって書いてあるので多分ここからStartするのが良さそうblu3mo.icon
DeepLでポン
プロトコルの概要#
Authenticated Transfer Protocol、通称ATPは、大規模な分散型ソーシャルアプリケーションのためのプロトコルである。本資料では、ATプロトコルの背景にある考え方を紹介します。
Identity#
ユーザーは、ATプロトコルのドメイン名で識別されます。これらのドメインは、ユーザーのアカウントとそのデータを保護する暗号化URLにマッピングされます。
https://atproto.com/img/identities.jpg
これはDNS的なURLとは関係ないのかな..?blu3mo.icon シンプルにdidに基づくURLを暗号化URLと表現してるだけな気はするkota-yata.icon
データリポジトリー#
ユーザーデータは、Signed Data Repositoriesで交換されます。このリポジトリは、投稿、コメント、「いいね!」、フォロー、メディアブロブなどを含むレコードの集合体である。 https://atproto.com/img/data-repos.jpg
なるほど、signsってのは普通にIDとパスワードのペアの認証のことかな?blu3mo.icon
フェデレーション#
ATPは、フェデレーテッド・ネットワーキング・モデルでリポジトリを同期します。ネットワークが便利に使え、確実に利用できるようにするために、フェデレーションが選ばれました。コマンドは、HTTPS + XRPCを使用してサーバー間で送信されます。 https://atproto.com/img/federation.jpg
色々な人のrepoを持ったサーバー同士が通信する感じか
相互運用#
Lexiconと呼ばれるグローバルなスキーマネットワークは、サーバー間の呼び出しの名前と動作を統一するために使用されます。サーバーは、ユーザーリポジトリを同期するためのコアATP Lexiconや、基本的な社会的動作を提供するためのBsky Lexiconなど、機能セットをサポートする「Lexicon」を実装します。 https://atproto.com/img/interop.jpg
全然わからんblu3mo.icon
ベースのプロトコルの上に乗っかるプラグイン的なプロトコル、みたいな..?
Lexiconという言葉自体は語彙、語彙目録という意味らしいblu3mo.icon
Webがドキュメントを交換するのに対し、ATプロトコルはschematic and semantic Informationを交換し、異なる組織のソフトウェアが互いのデータを理解することを可能にします。これにより、ATPクライアントはサーバーに依存しないユーザーインターフェースを自由に作成でき、コンテンツを閲覧する際にレンダリングコード(HTML/JS/CSS)を交換する必要がなくなります。
データを通信しているからインターフェースは好きにできるよ、ということかblu3mo.icon これはそうね
Twitterはデータとインターフェースが一体化されているから規制出来てしまう スケール#を実現する
ATPでは、「スモールワールド」と「ビッグワールド」のネットワーキングを区別しています。スモールワールドネットワーキングは個人間の活動を包含し、ビッグワールドネットワーキングはユーザーの個人的な交流以外の活動を集約しています。
スモールワールド:メンション、リプライ、DMなど、特定のユーザーを対象としたイベントの配信や、フォローグラフに応じたデータセットの同期。
ビッグワールド:大規模な指標(いいね、リポスト、フォロワー)、コンテンツ発見(アルゴリズム)、ユーザー検索。
なるほど、なんか面白くなってきたblu3mo.icon
PDS同士のP2P?の通信でスモールスケールかつ重い情報の交換はやる という感じかな?合理的blu3mo.icon
パーソナルデータサーバー(PDS)はスモールワールドのネットワーキングを担当し、インデックスサービスは別途ネットワークをクロールしてビッグワールドのネットワーキングを提供します。
https://atproto.com/img/small-big-world.jpg
スモールワールド/ビッグワールドの区別は、スケールの大きさと同時に、ユーザーの高度な選択を実現することを目的としています。
アルゴリズムによる選択#
ウェブ検索エンジンと同様に、ユーザーは自由にインデクサを選択することができます。各フィード、ディスカバリーセクション、検索インターフェースは、サードパーティーのサービスから提供されながら、PDSに統合されています。
https://atproto.com/img/algorithmic-choice.jpg
改めて名前読んだらCrawlしてIndexするのは検索エンジンそのままだwblu3mo.icon
フォローしてるユーザーのPDSはP2Pでとってきて、検索タブとかからの情報取得はCrawling Indexerがやるみたいな認識で良いのかなkota-yata.icon
「PDSに統合される」とは?blu3mo.icon
アカウントポータビリティ#
パーソナルデータサーバーは、全体がオフラインになったり、特定のユーザーに対するサービスを停止したりと、いつでも障害が発生する可能性があると想定しています。ATPの目標は、サーバーの関与なしに、ユーザーが自分のアカウントを新しいPDSに移行できるようにすることである。
ユーザーデータは署名されたデータリポジトリに保存され、DIDによって検証される。DIDは基本的にユーザー証明書のレジストリであり、TLS証明書システムに似ているところがある。DIDは、安全で信頼性が高く、ユーザーのPDSから独立していることが期待されている。
https://atproto.com/img/did-doc.jpg
DIDは、nostrの秘密鍵的な感じで使っているのかな?blu3mo.icon 各DID Documentは、署名鍵と回復鍵の2つの公開鍵を公開する。
署名キー。DID Documentとユーザーのデータリポジトリへの変更を証明する。
リカバリーキー。72時間以内であれば、署名鍵を上書きすることができる。
署名鍵はPDSがユーザーのデータを管理するために預けられるが、回復鍵はペーパーキーなどとしてユーザーが保存する。これにより、ユーザーは元のホストの手を借りずに、新しいPDSにアカウントを更新することが可能になります。
これはまあ本質ではないけど実用上大事な仕様かなblu3mo.icon
https://atproto.com/img/recovery.jpg
ユーザーのデータのバックアップは、バックアップとしてクライアントに永続的に同期されます(利用可能なディスク容量に依存)。PDSが予告なく消滅した場合、ユーザーはDID Documentを更新し、バックアップをアップロードすることで、新しいプロバイダーに移行することができるはずです。
これは良いblu3mo.icon
こういう時に過去ツイートを自由に書き換えたりできたりしないのかなblu3mo.icon
別に本人なら好きにしたら良いじゃんみたいな思想?
でもRT数とかは書き換えらたらまずいだろうし、その辺りの情報の正しさの保証がどうなっているのか掴めていないblu3mo.icon スピーチ、リーチ、そしてモデレーション#。
ATPのモデルは、スピーチとリーチは2つの別々のレイヤーであるべきで、互いに協力し合うように構築されています。スピーチ」レイヤーは中立的な立場を保ち、権限を分散させ、誰もが発言できるように設計されています。リーチ」レイヤーはその上に位置し、柔軟性を備え、拡張できるように設計されています。
https://atproto.com/img/speech-vs-reach.jpg
ATPのベースレイヤー(Personal Data Repositories and Federated Networking)は、誰もが自由に参加できる言論のための共通の空間を作り出します。これは、誰でもウェブサイトを立ち上げることができるウェブに似ています。そして、インデックスサービスは、検索エンジンに例えられるように、ネットワークからコンテンツを集約することでリーチを可能にします。
なるほどblu3mo.icon*3
仕様
5つの主要な仕様が@-protocolのv1を構成しています。これらの仕様は以下の通りです。
認証型転送プロトコル
クロスシステムRPC(XRPC)
レキシコン・スキーマ
ネームスペースID(NSID)
DID:プレースホルダー(did:plc)
これらのスペックは、依存関係の3つのレイヤーに整理することができます。
https://atproto.com/img/spec-diagram.jpg
ここから先は、ガイドやスペックを読み進めることができます。
www.DeepL.com/Translator(無料版)で翻訳しました。
npm:@at-proto/api にblueskyの仕様も入ってる
bsky lexicon (app.bsky.~~) と、現在のBlueskyベータ版(PDS + Crawling Indexer + iOS/Webクライアント)は異なるレイヤーにあるということかなblu3mo.icon
bsky lexiconはプロトコルの一部